The present invention relates to video graphic interface devices and methods which support multi-mode video displays of data so that a displayed image can be reoriented, such as from a landscape to a portrait displayed image, thereby permitting the physical reorientation of the display device while maintaining the image upright.
Computer systems having graphic video displays are well known in the art. Typically graphic interface devices use a signal which is rastered onto the display in multiple rows of pixels to produce a desired video image. By industry convention, a number of standardized resolution pixel display modes have developed. For example, one common resolution mode is to define a video image with 600 rows of pixels, each row having 800 pixels, thus providing 800xc3x97600 resolution. A common higher resolution display mode provides 768 rows of pixels where each row has 1,024 pixels, thus, 1024xc3x97768 resolution. Other common resolution modes range from 640xc3x97480 pixels to 1280xc3x971024 pixels.
Most commonly, the physical display to which the video interface device is connected is horizontally oriented so that an upright displayed image is in a landscape orientation. However, from time to time, it may be desirable to orient the physical display in a sideways portrait orientation or even upside down from the normal landscape orientation. When a display is turned sideways, i.e. 90xc2x0, the normal landscape displayed image also appears sideways. In order for the image to appear upright when a typical physical display is oriented sideways, the image can be displayed in a portrait orientation. Thus, in a portrait orientation, a normal 800xc3x97600 display will appear as a 600xc3x97800 image.
While it is possible to construct a special display device which changes the image orientation of a display image in the display device to accommodate a change in the display""s physical orientation, it is desirable to be able to merely reorient the data which define the pixels of the video image. Accordingly, it is desirable to provide a video interface device that can change the orientation of a displayed image when the display is physically orientated in other than its normal horizontal orientation.
The present invention provides a graphic interface device for producing a video signal for a display such that the user may select between landscape and portrait image display modes. The graphic interface device has a pixel data memory array from which a video output signal is derived. A primary graphics engine renders graphics in a landscape orientation in conjunction with a frame buffer. The primary landscape graphics engine stores rendered graphics to the pixel data memory array and also copies selected graphics in data blocks within the frame buffer called surfaces. To provide quick changes to the pixel data memory array, the primary graphics engine may recall a selected surface from the frame buffer, make any required change to the surface to produce the desired graphic, then store the changed data to both the pixel data memory array as well as the frame buffer.
In order to provide other display modes to display images in different physical orientations, a mode control is provided in conjunction with a rotated pixel data array buffer to facilitate the rendering of portrait oriented graphics by the primary landscape graphics engine. In addition, to facilitate the efficiency and speed of rendering portrait oriented graphics, a secondary portrait graphics engine is provided.
For some applications, such as where the user""s display is more frequently in a portrait orientation, the primary graphics engine can be configured to operate to render portrait oriented graphics and the secondary graphics engine is provided to render landscape oriented graphics. For convenience, the invention is described herein with a primary landscape engine.
Unlike the primary landscape engine, the secondary portrait engine need not be configured to render extensive pixel by pixel graphic images, but can be limited in nature to rendering graphics which may be reproduced from coordinate data such as uniform coloring of a rectangle or rendering specific types of graphics which are repetitively called for when operating in portrait mode. To enable the secondary portrait graphics engine to access the frame buffer directly, a rotated surface buffer is used by the primary landscape engine to indirectly store copies of data written to the rotated data array buffer in the frame buffer in a portrait orientation.
In addition to physical memory contained within the graphic interface device, the graphic engine may also have access to other memory within the computer system which it can utilize to temporarily store graphic data in rotated or unrotated formats. Accordingly, the entirety of the rotated surface buffer may be implemented in system memory.
When landscape mode is selected, the landscape engine renders the graphics for display in its normal manner. However, when portrait mode is selected, the mode control can choose between either using the portrait engine to render graphics or the landscape engine.
The secondary portrait engine directly renders graphics to the pixel data memory array in portrait mode. Where the landscape engine is selected, however, the data flow is switched by the mode control from a direct route from the landscape engine to the pixel data memory array to an indirect route via a rotated pixel data array buffer. In portrait mode, the landscape engine renders its graphics and writes to the pixel data array buffer which, in turn, rotates the data positioning and places it in the pixel data memory array. Concurrently therewith, the landscape engine accesses the frame buffer via the rotated surface buffer so that the rendered graphics which are written by the landscape engine to the rotated pixel data array buffer are also written to the rotated surface buffer whereupon they are saved in the frame buffer in a rotated, portrait orientation. This storage of rotated surfaces within the frame buffer permits the portrait engine to directly access the frame buffer with respect to those surfaces so that the portrait engine may utilize such saved surfaces in rendering direct portrait graphics when in the portrait mode.
Where a revised or new portrait oriented surface is to be displayed, the mode control selects between use of the portrait engine or the landscape engine dependent upon the type of graphic renderings which must be made. To the extent the more limited secondary portrait engine is capable of performing the required task, it is selected. When selected, the secondary portrait engine retrieves, if needed, a stored surface from the frame buffer, performs the required graphic renderings, stores the revised or new surface in the pixel data memory array to display the revised or new image, and can also copy the revised or new portrait oriented data into a frame buffer surface or into other available system memory. Where the portrait engine cannot perform the required task, the mode control selects the landscape engine. Upon selection, the primary landscape engine retrieves, if needed, a stored surface from the frame buffer or the rotated surface buffer, performs the required graphic renderings, and writes the revised or new surface to the rotated pixel data array buffer and the rotated surface buffer. The revised or new surface is then rotated and stored in the pixel data memory array and saved in the frame buffer in a portrait orientation via the rotated surface buffer.
The mode control may also implement an inversion function to provide inverted landscape and/or portrait video images. The inversion function permits the interface device to provide an inverted, or upside down, landscape video image which will appear upright if the physical display is rotated 180xc2x0. For portrait mode, if a displayed image appears upright when the normal landscape physical display is rotated 90xc2x0, the inverted portrait display will appear upright when the normally landscape display is rotated 270xc2x0. Where the video image is an Mxc3x97N pixel array, the mode control simply stores any data intended for pixel PI,J at pixel PM+Ixe2x88x92I, N+Ixe2x88x92J. The same function is equally useable when operated in portrait mode to produce an inverted portrait image for an NxM pixel display image.
It is an object of the present invention to provide an efficient video interface device capable of multi-mode video image orientation displays. Providing rotated buffers for utilizing a primary landscape engine to produce and store portrait oriented images in combination with a secondary portrait engine provides a highly efficient and fast method of rendering portrait images in a graphic interface device which is designed for normal landscape displays.